<?php
// 读取JSON配置文件
$configContent = file_get_contents(__DIR__ . '/admin/config.json');
$config = json_decode($configContent, true);

// 检查Redis是否启用
if (empty($config['redisEnabled']) || !$config['redisEnabled']) {
    echo "Redis未启用，请先在管理后台启用Redis";
    exit;
}

// 检查Redis扩展是否安装
if (!extension_loaded('redis')) {
    echo "Redis扩展未安装，请先安装PHP Redis扩展";
    exit;
}

try {
    // 创建Redis连接
    $redis = new Redis();
    
    // 连接到Redis服务器
    $host = $config['redisHost'] ?? 'localhost';
    $port = $config['redisPort'] ?? 6379;
    $timeout = 2; // 连接超时时间（秒）
    
    if (!$redis->connect($host, $port, $timeout)) {
        throw new Exception("无法连接到Redis服务器: {$host}:{$port}");
    }
    
    // 如果设置了密码，进行身份验证
    if (!empty($config['redisPassword'])) {
        if (!$redis->auth($config['redisPassword'])) {
            throw new Exception("Redis身份验证失败，请检查密码");
        }
    }
    
    // 选择数据库
    $database = intval($config['redisDatabase'] ?? 0);
    if (!$redis->select($database)) {
        throw new Exception("无法选择Redis数据库: {$database}");
    }
    
    // 测试连接 - 设置和获取一个测试值
    $testKey = 'best_image_api_test';
    $testValue = 'Connection test at ' . date('Y-m-d H:i:s');
    
    $redis->set($testKey, $testValue);
    $retrievedValue = $redis->get($testKey);
    
    if ($retrievedValue === $testValue) {
        echo "Redis连接成功！\n";
        echo "服务器: {$host}:{$port}\n";
        echo "数据库: {$database}\n";
        echo "测试值: {$retrievedValue}";
    } else {
        throw new Exception("Redis测试失败：无法正确存储和检索测试值");
    }
    
    // 删除测试键
    $redis->del($testKey);
    
    // 关闭连接
    $redis->close();
    
} catch (Exception $e) {
    echo "Redis连接测试失败: " . $e->getMessage();
}
?>